﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using DataTier;

namespace KlageSystem
{
    /// <summary>
    /// Summary description for UpdateService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class UpdateService : System.Web.Services.WebService
    {

        private string GuidKey = "ca074c67-a55f-430b-8094-054fd9958818";
        string connStr = ConnectionManager.GetConnStr();

        [WebMethod]
        public string InsertSagIKlagesystem(string org_klagenr, string ejd_adresse, string ejd_postnr, string ejd_by, string ejd_type, string ejer_kontakt,
            string status, string recieved, string ejdNummer, string ejdKommuneNr, string securityKey)
        {
            if (securityKey != GuidKey)
                return "Invalid security key";

            try
            {
                Org_Klagedata.Insert(connStr, int.Parse(org_klagenr), ejd_adresse, ejd_postnr, ejd_by, Enums.GetEjdType(ejd_type), ejer_kontakt, Enums.GetKlageStatus(status), ejdNummer, ejdKommuneNr);
                return "Ok";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

        [WebMethod]
        public string InsertStamoplysninger(
            string Gammelt_Klagesagsnr,
            string Ejer_Firma,
            string co_ejer,
            string Ejd_Postnr,
            string Ejer_Adresse,
            string Ejer_Postnr,
            string Ejer_By,
            string Titel,
            string Ejer_Kontakt,
            string Kunde_Telefon,
            string Ejer_Email,
            string Potentiale,
            string Sagstype,
            string Bemaerkning,
            string SecurityKey)
        {
            if (SecurityKey != GuidKey)
                return "Invalid security key";

            try
            {
                var gammelt_klagesagsnr_int = int.MinValue;
                if (!int.TryParse(Gammelt_Klagesagsnr, out gammelt_klagesagsnr_int))
                    return "Gammelt_Klagesagsnr not int";
                
                var sagsType_int = int.MinValue;
                if (!int.TryParse(Sagstype, out sagsType_int))
                    return "Sagstype not int";

                var potentiale_int = int.MinValue;
                if (!int.TryParse(Potentiale, out potentiale_int))
                    return "Potentiale not int";
                
                RawKlagesagData.Insert(gammelt_klagesagsnr_int, Ejer_Firma, co_ejer, Ejer_Postnr, Ejer_By, Titel, Ejer_Kontakt, Kunde_Telefon, 
                Ejer_Email, potentiale_int, (RawSagsType) Enum.ToObject(typeof(RawSagsType), sagsType_int), Bemaerkning, connStr);

                var sag = RawKlagesagData.Load(gammelt_klagesagsnr_int, connStr);
                return "Ok - " + sag.EjerKontakt;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }            
        }

        [WebMethod]
        public string IsNewStamoplysning(string Gammelt_Klagesagsnr, string SecurityKey)
        {
            if (SecurityKey != GuidKey)
                return "Invalid securityKey";
            
            var Gammelt_Klagesagsnr_int = int.MinValue;
            if (!int.TryParse(Gammelt_Klagesagsnr, out Gammelt_Klagesagsnr_int))
                return "Gammelt_Klagesagsnr not int";

            var klagesag = RawKlagesagData.Load(Gammelt_Klagesagsnr_int, connStr);

            return (klagesag.Gammelt_Klagesagsnr == 0).ToString();
        }

        [WebMethod]
        public string IsNewKlageSag(string Org_Klagenr, string SecurityKey)
        {
            if (SecurityKey != GuidKey)
                return "Invalid securityKey";

            var Org_Klagenr_int = int.MinValue;
            if (!int.TryParse(Org_Klagenr, out Org_Klagenr_int))
                return "Org_Klagenr not int";

            var klagesag = Org_Klagedata.Load(connStr, Org_Klagenr_int);

            return (klagesag.OrgKlagenr == 0).ToString();
        }

        
        [WebMethod]
        public string UpdateStamoplysninger(
            string Ejer_Firma,
            string co_ejer,
            string Ejer_Postnr,
            string Ejer_By,
            string Titel,
            string Ejer_Kontakt,
            string Kunde_Telefon,
            string Ejer_Email,
            string Potentiale,
            string Sagstype,
            string Bemaerkning,
            string Gammelt_Klagesagsnr,
            string SecurityKey)
        {
            if (SecurityKey != GuidKey)
                return "Invalid security key";

            try
            {
                var gammelt_klagesagsnr_int = int.MinValue;
                if (!int.TryParse(Gammelt_Klagesagsnr, out gammelt_klagesagsnr_int))
                    return "Gammelt_Klagesagsnr not int";

                var sagsType_int = int.MinValue;
                if (!int.TryParse(Sagstype, out sagsType_int))
                    return "Sagstype not int";

                var potentiale_int = int.MinValue;
                if (!int.TryParse(Potentiale, out potentiale_int))
                    return "Potentiale not int";

                var stamdata = RawKlagesagData.Load(gammelt_klagesagsnr_int, connStr);

                if (stamdata.Gammelt_Klagesagsnr != gammelt_klagesagsnr_int)
                    return "Could not find stamdata";

                stamdata.EjerFirma = Ejer_Firma;
                stamdata.CoEjer = co_ejer;
                stamdata.EjerPostNr = Ejer_Postnr;
                stamdata.EjerBy = Ejer_By;
                stamdata.Title = Titel;
                stamdata.EjerKontakt = Ejer_Kontakt;
                stamdata.KundeTelefon = Kunde_Telefon;
                stamdata.EjerEmail = Ejer_Email;
                stamdata.Potentiale = potentiale_int;
                stamdata.SagsType = (RawSagsType)Enum.ToObject(typeof(RawSagsType), sagsType_int);
                stamdata.Bemærkning = Bemaerkning;

                stamdata.Save(connStr);

                return "Ok";
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }
    }
}
